package com.xxl.job.admin.dao;

import com.xxl.job.admin.core.model.CronJob;
import com.xxl.job.admin.dto.CronJobDetailsDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface CronJobDao {

    // 查询定时任务列表，包含 IP、负责人、系统、定时时间、定时指令、生效状态、更新时间
    List<CronJobDetailsDto> findCronJobDetails(@Param("ip") String ip,
                                               @Param("owner") String owner,
                                               @Param("systemName") String systemName,
                                               @Param("serverUser") String serverUser,
                                               @Param("command") String command,
                                               @Param("offset") int offset,
                                               @Param("limit") int limit);

    // 统计符合条件的定时任务数量
    int countCronJobs(@Param("ip") String ip,
                      @Param("owner") String owner,
                      @Param("systemName") String systemName,
                      @Param("serverUser") String serverUser,
                      @Param("command") String command);

    // 根据 JobHandler 查询执行器 ID
    Integer findExecutorIdByJobHandler(String jobHandler);

    // 更新定时任务的状态
    void updateCronJobStatus(@Param("jobId") long jobId, @Param("status") int status,@Param("schedule") String schedule);

    CronJobDetailsDto findById(long jobId);

    // 更新定时任务
    void updateCronJob(@Param("jobId") long jobId,
                       @Param("schedule") String schedule,
                       @Param("command") String command,
                       @Param("owner") String owner,
                       @Param("systemName") String systemName,
                       @Param("status") Integer status);
    //新增定时任务
    void insertCronJob(CronJob cronJob);

    Integer findJobIdByAddWork(@Param("ip") String ip, @Param("schedule") String schedule, @Param("command") String command);



}
